﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace GenerateDiagram
{
    /// <summary>
    /// Abstract class instance of a column in database
    /// </summary>
    public abstract class AbstractColumn:AbstractBase
    {
        /// <summary>
        /// Get or set ColumnID of a column
        /// </summary>
        public int ID { get; set; }
        /// <summary>
        /// Get or set a column have nullable
        /// </summary>
        public bool IsNullable { get; set; }
        /// <summary>
        /// Get or set a column have identity
        /// </summary>
        public bool IsIdentity { get; set; }
        /// <summary>
        /// A data type of column
        /// </summary>
        public AbstractColumnType ColumnType { get; set; }
        /// <summary>
        /// Get or set a column is primary key
        /// </summary>
        public bool IsPrimaryKey { get; set; }
        /// <summary>
        /// A option property when render
        /// </summary>
        public RenderOption RenderOption { get; set; }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="netVersion">.Net Framework version will render (2.0, 3.0, 3.5, 4.0)</param>
        /// <returns>Return property on programming language</returns>
        public abstract string ToProperty(Common.Version netVersion);
        
    }
}
